package com.zhangck.bos2_0.Service.Impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zhangck.bos2_0.Service.StandardService;
import com.zhangck.bos2_0.dao.StandardRepository;

import cn.itcast.bos.domain.base.Standard;

/** 
* @author 上午茶
* @version 创建时间：2018年5月29日 上午10:59:32 
* 类说明 
*/
@Service
@Transactional
public class StandardServiceImpl implements StandardService{

	@Autowired
	private StandardRepository StandardDao;
	
	@Override//当注解参数加上allEntries为true时，意思是说这个清除缓存是清除当前value值空间下的所有缓存数据
	@CacheEvict(value="standard",allEntries=true)//清楚缓存区数据，常用于增加，删除，修改
	public void save(Standard standatrd) {
		StandardDao.save(standatrd);
	}


	/*value：缓存位置名称，不能为空，如果使用EHCache，就是ehcache.xml中声明的cache的name
		key：缓存的key，默认为空，既表示使用方法的参数类型及参数值作为key，支持SpEL,设置最好保持唯一性
		condition：触发条件，只有满足条件的情况才会加入缓存，默认为空，既表示全部都加入缓存，支持SpEL*/
	@Override
	@Cacheable(value="standard",key="#request.pageNumber+'_'+#request.pageSize")//例如(1_30)为了保持唯一性
	public Page<Standard> finddatapage(Pageable request) {
		return StandardDao.findAll(request);
		
	}

	@Override
	public void delete(Integer parseInt) {
		List<Standard> byId = StandardDao.findById(parseInt);
		for (Standard standard : byId) {
			StandardDao.delete(standard);
		}
	}

	
	@Override
	@Cacheable("standard")//应用缓存区，对方法返回的结果进去缓存，适合用于查询。
	public List<Standard> findAll() {
		return StandardDao.findAll();
		}


}
